SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[SP_TTTIFN_BANC_Q01]
/*-------------------------------------------------------*/
/*---Empresa               OFISIS S.A.                --*/
/*---CLIEnte               VIRU                 --*/
/*---Sistema               Tesoreria                  --*/
/*---M®dulo                Empresa                    --*/
/*---Programa              RESUMEN DE LINEAS     --*/
/*---Script                SP_TTTIFN_BANC_Q01.sql     --*/
/*---Nombre SP             SP_TTTIFN_BANC_Q01         --*/
/*---Desarrollado por      Reynaldo Menacho Luyo      --*/
/*---Fecha Creaci®n        22/06/2004                 --*/
/*---Base Datos            SQL			       --*/
/*---Versi®n               2000                       --*/
/*---Invoca a SP                                      --*/
/*-------------------------------------------------------*/

/*-------------------------------------------------------*/
/*---Modificado 1 por     :--*/ 
/*---Fecha Modificaci®n   :--*/ 
/*---Detalle Modificaci®n :--*/
/*-------------------------------------------------------*/

/*-------------------------------------------------------*/
/*---Drop Proc SP_TTTIFN_BANC_Q01                      --*/
/*--- Grant execute on SP_TTTIFN_BANC_Q01 to public         --*/ 
/*---	SP_TTTIFN_BANC_Q01 "C", "P", "SOL", "DOL", "Where TTTIPO_FINA.CO_TIPO_FINA = 'POS' ", '', "2004/08/19"     --*/
/*-------------------------------------------------------*/
@ISTI_AUXI_CLIE TD_VC_001,
@ISTI_AUXI_PROV TD_VC_001,
@ISCO_MONE_NACI TD_VC_003,
@ISCO_MONE_EXTR TD_VC_003,
@ISCA_WHER_0001	VARCHAR(255),
@ISCA_WHER_0002	VARCHAR(255),
@IDFE_REPO		TD_DT_001
 
AS	

CREATE TABLE #TWTIFN_BANC_Q01_1 
 ( CO_EMPR      varchar(3) NULL,
   CO_BANC	varchar(3) NULL,
   CO_TIPO_FINA	varchar(3) NULL,
   CO_MONE_CRED	varchar(3) NULL,
   CO_ENTI	varchar(20) NULL,
   TI_DOCU	varchar(3) NULL,
   NU_DOCU	varchar(20) NULL,
   FE_OPER	datetime NULL,
   CO_MONE	varchar(3) NULL,
   IM_TOTA	numeric(16,4) DEFAULT 0,
   IM_PAGA numeric(16,4) DEFAULT 0,
   IM_FINA numeric(16,4) DEFAULT 0,
   IM_PAGO_FINA numeric(16,4) DEFAULT 0,
   IM_LINE_UTIL numeric(16,4) DEFAULT 0,
   TI_DETA	varchar(2) NULL,
   ST_FLAG	varchar(1) NULL)
  
DECLARE 

@VSCO_EMPR 		TD_VC_002,
@VSTI_CAMB		TD_VC_001,
@VSTI_ORIG		TD_VC_001,
@VSDE_ORDE		TD_VC_050,
@VSFE_REPO		TD_VC_010,
@VNIM_CXCB_CONV TD_NU_016_004,
@VNIM_PAGO_CONV TD_NU_016_004,
@VNFE_0001      TD_IN_001, 
@VSCA_WHER 		VARCHAR(600),
@VDTIME			DATETIME

SELECT @VSCA_WHER = REPLACE(@ISCA_WHER_0001+@ISCA_WHER_0002, "TCFINA_BANC", "T1")

SELECT 	@VSFE_REPO = Convert(Varchar(10), @IDFE_REPO, 103)

-- TIPOS DE DETALLE(TI_DETA = "1" AL "7")
--1.- DOCS DE CLIENTES EN FINANCIAMIENTO			
--2.- PAGOS BANCOS / CAJA

--SELECT @VDTIME = GETDATE()
--SELECT 'INICIO INSERTS', @VDTIME

--1.1- FINANCIAMIENTOS QUE GENERAN CUENTA POR PAGAR Y FINANCIAN DOC'S BANCARIOS

  EXECUTE( "INSERT INTO #TWTIFN_BANC_Q01_1 
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, CO_ENTI, TI_DOCU, NU_DOCU, FE_OPER, 
   CO_MONE, IM_TOTA, TI_DETA)
  Select T2.CO_EMPR, T2.CO_BANC, TTTIPO_FINA.CO_TIPO_FINA, T2.CO_PROV, 
  T2.CO_TIPO_DOCU, T2.NU_DOCU_PROV, T2.FE_EMIS, 
  T2.CO_MONE, T2.IM_TOTA, '1'
  From  TTTIPO_FINA, TMDOCU_PROV T2, TTDOCU_CNTB T3 " 
  + @VSCA_WHER + "
  And TTTIPO_FINA.CO_TIPO_FINA = T2.CO_TIPO_FINA
  And TTTIPO_FINA.ST_GENE_CXPA = 'S'
  And TTTIPO_FINA.ST_DOCU_BANC = 'S'
  And T2.FE_EMIS <= Convert(Datetime, '" + @VSFE_REPO + "', 103)
  And T2.CO_ESTA_DOCU != 'ANU' 
  And T2.CO_TIPO_DOCU = T3.TI_DOCU ")

--1.2.- PAGOS BANCOS / CAJA
  EXECUTE("INSERT INTO #TWTIFN_BANC_Q01_1 
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, CO_ENTI, TI_DOCU, NU_DOCU, FE_OPER, 
   CO_MONE, IM_PAGA, TI_DETA)
  Select T2.CO_EMPR, T2.CO_BANC, TTTIPO_FINA.CO_TIPO_FINA, T2.CO_PROV, 
  T2.CO_TIPO_DOCU, T2.NU_DOCU_PROV, T4.FE_OPER, T2.CO_MONE, 
  ( PatIndex(T3.ST_CIER_DOCU, 'N') * T3.IM_CONV_DOCU +
    PatIndex(T3.ST_CIER_DOCU, 'S') * T3.IM_SALD_DOCU ), '2'
  From  TTTIPO_FINA, TMDOCU_PROV T2, TDMOVI_BANC T3, TCMOVI_BANC T4, TTDOCU_CNTB T5 "
  + @VSCA_WHER + "
  And TTTIPO_FINA.CO_TIPO_FINA = T2.CO_TIPO_FINA
  And TTTIPO_FINA.ST_GENE_CXPA = 'S'
  And TTTIPO_FINA.ST_DOCU_BANC = 'S'

  And T3.TI_ENTI = '" + @ISTI_AUXI_PROV + "'
  AND T2.CO_EMPR = T3.CO_EMPR
  And T2.CO_PROV = T3.CO_ENTI
  AND T2.CO_TIPO_DOCU = T3.TI_DOCU_ENTI
  AND T2.NU_DOCU_PROV = T3.NU_DOCU_ENTI

  And T3.CO_EMPR = T4.CO_EMPR  
  And T3.CO_UNID_CONC = T4.CO_UNID_CONC
  And T3.CO_BANC = T4.CO_BANC  
  And T3.NU_CNTA_BANC  = T4.NU_CNTA_BANC  
  And T3.AA_BNCO = T4.AA_BNCO
  And T3.MM_BNCO = T4.MM_BNCO 
  And T3.TI_MOVI_BANC  = T4.TI_MOVI_BANC 
  And T3.NU_COMP_BANC = T4.NU_COMP_BANC
  And Rtrim(Isnull(T3.CO_CNTA_EMPR, '')) = ''
  And T4.FE_OPER  <= Convert(Datetime, '" + @VSFE_REPO + "', 103)
  And T4.TI_SITU != 'ANU' 

  And T2.CO_TIPO_DOCU = T5.TI_DOCU ")


--2.1- FINANCIAMIENTOS QUE GENERAN CUENTA POR PAGAR Y FINANCIAN DOC'S DE CLIENTES

  EXECUTE( "INSERT INTO #TWTIFN_BANC_Q01_1 
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, CO_ENTI, TI_DOCU, NU_DOCU, FE_OPER, 
   CO_MONE, IM_TOTA, CO_MONE_CRED, IM_FINA, TI_DETA)
  Select T2.CO_EMPR, T2.CO_BANC, TTTIPO_FINA.CO_TIPO_FINA, T2.CO_CLIE, 
  T2.CO_TIPO_DOCU, T2.NU_DOCU_CLIE, T2.FE_EMIS, 
  T2.CO_MONE, T2.IM_TOTA, T5.CO_MONE_CRED, T3.IM_FINA, '3'
  From  TTTIPO_FINA, TMDOCU_CLIE T2, TDFINA_BANC T3, TCFINA_BANC T4, 
	TTTIFN_BANC T5, TTDOCU_CNTB T6 " 
  + @VSCA_WHER + "
  And TTTIPO_FINA.CO_TIPO_FINA = T2.CO_TIPO_FINA
  And TTTIPO_FINA.ST_GENE_CXPA = 'S'
  And TTTIPO_FINA.ST_DOCU_CLIE = 'S'
  And T2.FE_EMIS <= Convert(Datetime, '" + @VSFE_REPO + "', 103)
  And T2.CO_ESTA_DOCU != 'ANU' 
  
  And T2.CO_EMPR = T3.CO_EMPR
  And T3.TI_ENTI = '" + @ISTI_AUXI_CLIE + "'
  And T2.CO_CLIE = T3.CO_ENTI
  And T2.CO_TIPO_DOCU = T3.TI_DOCU_ENTI
  And T2.NU_DOCU_CLIE = T3.NU_DOCU_ENTI
  And Isnull(Rtrim(T2.NU_UNIC_BANC), '') != ''
  
  And T3.CO_EMPR = T4.CO_EMPR
  And T3.CO_BANC = T4.CO_BANC
  And T3.CO_TIPO_FINA = T4.CO_TIPO_FINA
  And T3.NU_COMP_FINA = T4.NU_COMP_FINA
  And T4.TI_SITU = 'APR'

  And T3.CO_EMPR = T5.CO_EMPR
  And T3.CO_BANC = T5.CO_BANC
  And T3.CO_TIPO_FINA = T5.CO_TIPO_FINA

  And T2.CO_TIPO_DOCU = T6.TI_DOCU ")

--2.2.- PAGOS BANCOS / CAJA
  EXECUTE("INSERT INTO #TWTIFN_BANC_Q01_1 
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, CO_ENTI, TI_DOCU, NU_DOCU, FE_OPER, 
   CO_MONE, IM_PAGA, CO_MONE_CRED, IM_PAGO_FINA, TI_DETA)
  Select T2.CO_EMPR, T2.CO_BANC, TTTIPO_FINA.CO_TIPO_FINA, T2.CO_CLIE, 
  T2.CO_TIPO_DOCU, T2.NU_DOCU_CLIE, T4.FE_OPER, T2.CO_MONE, 
  ( PatIndex(T3.ST_CIER_DOCU, 'N') * T3.IM_CONV_DOCU +
    PatIndex(T3.ST_CIER_DOCU, 'S') * T3.IM_SALD_DOCU ), 
  T5.CO_MONE_CRED,
  (Select dbo.FN_TCFACT_CAMB_Q03(T2.CO_MONE, T5.CO_MONE_CRED, 
  ( PatIndex(T3.ST_CIER_DOCU, 'N') * T3.IM_CONV_DOCU +
    PatIndex(T3.ST_CIER_DOCU, 'S') * T3.IM_SALD_DOCU ), '" + @ISCO_MONE_NACI + "',
    '" + @ISCO_MONE_EXTR + "', T4.FA_TIPO_CAMB, T4.FA_CAMB_EXTR)), '4'
  From  TTTIPO_FINA, TMDOCU_CLIE T2, TDMOVI_BANC T3, TCMOVI_BANC T4, 
	TTTIFN_BANC T5, TTDOCU_CNTB T6 "
  + @VSCA_WHER + "
  And TTTIPO_FINA.CO_TIPO_FINA = T2.CO_TIPO_FINA
  And TTTIPO_FINA.ST_GENE_CXPA = 'S'
  And TTTIPO_FINA.ST_DOCU_CLIE = 'S'

  And T3.TI_ENTI = '" + @ISTI_AUXI_CLIE + "'
  AND T2.CO_EMPR = T3.CO_EMPR
  And T2.CO_CLIE = T3.CO_ENTI
  AND T2.CO_TIPO_DOCU = T3.TI_DOCU_ENTI
  AND T2.NU_DOCU_CLIE = T3.NU_DOCU_ENTI
  And Isnull(Rtrim(T2.NU_UNIC_BANC), '') != ''

  And T3.CO_EMPR = T4.CO_EMPR  
  And T3.CO_UNID_CONC = T4.CO_UNID_CONC
  And T3.CO_BANC = T4.CO_BANC  
  And T3.NU_CNTA_BANC  = T4.NU_CNTA_BANC  
  And T3.AA_BNCO = T4.AA_BNCO
  And T3.MM_BNCO = T4.MM_BNCO 
  And T3.TI_MOVI_BANC  = T4.TI_MOVI_BANC 
  And T3.NU_COMP_BANC = T4.NU_COMP_BANC
  And Rtrim(Isnull(T3.CO_CNTA_EMPR, '')) = ''
  And T4.FE_OPER  <= Convert(Datetime, '" + @VSFE_REPO + "', 103)
  And T4.TI_SITU != 'ANU' 

  And T2.CO_EMPR = T5.CO_EMPR
  And T2.CO_BANC = T5.CO_BANC
  And T2.CO_TIPO_FINA = T5.CO_TIPO_FINA

  And T2.CO_TIPO_DOCU = T6.TI_DOCU ")



--3.1- FINANCIAMIENTOS QUE NO GENERAN CUENTA POR PAGAR Y FINANCIAN DOC'S DE BANCOS

  EXECUTE( "INSERT INTO #TWTIFN_BANC_Q01_1 
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, CO_ENTI, TI_DOCU, NU_DOCU, FE_OPER, 
   CO_MONE, IM_TOTA, TI_DETA)
  Select T2.CO_EMPR, T2.CO_BANC, TTTIPO_FINA.CO_TIPO_FINA, T2.CO_ENTI, 
  T2.TI_DOCU_BANC, T2.NU_DOCU_BANC, T3.FE_OPER, T2.CO_MONE, T2.IM_DOCU, '5'
  From  TTTIPO_FINA, TMDOCU_BANC T2, TCFINA_BANC T3 " 
  + @VSCA_WHER + "
  And TTTIPO_FINA.CO_TIPO_FINA = T3.CO_TIPO_FINA
  And TTTIPO_FINA.ST_GENE_CXPA = 'N'
  And TTTIPO_FINA.ST_DOCU_BANC = 'S'
  And T2.CO_EMPR = T3.CO_EMPR
  And T2.CO_BANC = T3.CO_BANC
  And T2.TI_DOCU_BANC = T3.TI_DOCU_BANC
  And T2.NU_DOCU_BANC = T3.NU_DOCU_BANC
  And T3.FE_OPER <= Convert(Datetime, '" + @VSFE_REPO + "', 103)
  And T2.CO_ESTA_DOCU != 'ANU'
  And T3.TI_SITU = 'APR' ")

--3.2.- PAGOS BANCOS / CAJA
  EXECUTE("INSERT INTO #TWTIFN_BANC_Q01_1 
  (CO_EMPR, CO_BANC, CO_TIPO_FINA, CO_ENTI, TI_DOCU, NU_DOCU, FE_OPER, 
   CO_MONE, IM_PAGA, TI_DETA)
  Select T2.CO_EMPR, T2.CO_BANC, TTTIPO_FINA.CO_TIPO_FINA, T2.CO_ENTI, 
  T2.TI_DOCU_BANC, T2.NU_DOCU_BANC, T3.FE_OPER, T2.CO_MONE, 
  T3.IM_MOVI, '6'
  From  TTTIPO_FINA, TMDOCU_BANC T2, TTCANC_FINA T3 "
  + @VSCA_WHER + "
  And TTTIPO_FINA.CO_TIPO_FINA = T3.CO_TIPO_FINA
  And TTTIPO_FINA.ST_GENE_CXPA = 'N'
  And TTTIPO_FINA.ST_DOCU_BANC = 'S'

  AND T2.CO_EMPR = T3.CO_EMPR
  And T2.CO_BANC = T3.CO_BANC
  AND T2.TI_DOCU_BANC = T3.TI_DOCU_BANC
  AND T2.NU_DOCU_BANC = T3.NU_DOCU_BANC

  And T3.FE_OPER  <= Convert(Datetime, '" + @VSFE_REPO + "', 103)
  And T3.TI_SITU != 'ANU' ")

   	EXECUTE( "INSERT INTO #TWTIFN_BANC_Q01_1 
  	(CO_EMPR, CO_BANC, CO_TIPO_FINA, CO_ENTI, TI_DOCU, NU_DOCU,
	CO_MONE, CO_MONE_CRED, IM_TOTA, IM_PAGA, IM_FINA, IM_PAGO_FINA, TI_DETA)
	SELECT T1.CO_EMPR, T1.CO_BANC, T1.CO_TIPO_FINA, T1.CO_ENTI, T1.TI_DOCU, T1.NU_DOCU,
		Max(T1.CO_MONE) CO_MONE, Max(T1.CO_MONE_CRED) CO_MONE_CRED, 
		SUM(T1.IM_TOTA) IM_TOTA, SUM(T1.IM_PAGA) IM_PAGA, SUM(T1.IM_FINA) IM_FINA,
		SUM(T1.IM_PAGO_FINA) IM_PAGO_FINA, '99'
	FROM #TWTIFN_BANC_Q01_1 T1
	WHERE T1.TI_DETA = '3'
  	Or T1.TI_DETA = '4'
	GROUP BY CO_EMPR, CO_BANC, CO_TIPO_FINA, CO_ENTI, TI_DOCU, NU_DOCU ")


	UPDATE #TWTIFN_BANC_Q01_1
	SET IM_PAGO_FINA = CASE WHEN IM_PAGO_FINA > IM_FINA THEN IM_FINA ELSE IM_PAGO_FINA END
	WHERE TI_DETA = '99'

/*
SELECT * FROM #TWTIFN_BANC_Q01_1
WHERE TI_DETA = '99'
*/
-------------------------------------------------------------------------------
--   AGRUPO POR BANCO Y TIPO DE FINANCIAMIENTO Y LO INSERTO EN LA TABLA TEMPORAL   ---------
--------------------------------------------------------------------------------

   	EXECUTE( "INSERT INTO #TWTIFN_BANC_Q01_1 
  	(CO_EMPR, CO_BANC, CO_TIPO_FINA, IM_LINE_UTIL, ST_FLAG)
	SELECT 	CO_EMPR, CO_BANC, CO_TIPO_FINA, SUM(IM_TOTA - IM_PAGA), 'S'
	FROM #TWTIFN_BANC_Q01_1
	WHERE TI_DETA != '3'
    AND TI_DETA != '4'
    AND TI_DETA != '99'
	GROUP BY CO_EMPR, CO_BANC, CO_TIPO_FINA ")

   	EXECUTE( "INSERT INTO #TWTIFN_BANC_Q01_1 
  	(CO_EMPR, CO_BANC, CO_TIPO_FINA, IM_LINE_UTIL, ST_FLAG)
	SELECT 	CO_EMPR, CO_BANC, CO_TIPO_FINA, SUM(IM_FINA - IM_PAGO_FINA), 'S'
	FROM #TWTIFN_BANC_Q01_1
	WHERE TI_DETA = '99'
	GROUP BY CO_EMPR, CO_BANC, CO_TIPO_FINA ")


	SELECT T1.CO_EMPR, T5.DE_NOMB, T1.CO_TIPO_FINA, T3.DE_TIPO_FINA, 
		T1.CO_BANC, T4.DE_NOMB_CORT, T2.CO_MONE_CRED, T2.IM_LINE_CRED, 
		T1.IM_LINE_UTIL, T2.IM_LINE_CRED - T1.IM_LINE_UTIL
	FROM #TWTIFN_BANC_Q01_1 T1, TTTIFN_BANC T2, TTTIPO_FINA T3, TTBANC_FINA T4, TMEMPR T5
	WHERE T1.ST_FLAG = 'S'
	AND T1.CO_EMPR = T2.CO_EMPR
	AND T1.CO_BANC = T2.CO_BANC
	AND T1.CO_TIPO_FINA = T2.CO_TIPO_FINA
	AND T1.CO_TIPO_FINA = T3.CO_TIPO_FINA
	AND T1.CO_BANC = T4.CO_BANC
	AND T1.CO_EMPR = T5.CO_EMPR
	ORDER BY 1, 3

RETURN
/*------------------------- FIN ------------------------------ */


GO
